FIG. 1 is a schematic diagram of a network 100 of nodes (e.g., computing devices) interacting in a peer-to-peer (P2P) manner. Generally, a requesting node 101 sends a search message 105 (e.g., containing keywords relating to data that the requesting node 101 wishes to locate) to one or more intermediate network nodes 111 connected to the requesting node 101. Each intermediate node 111 receives the search message 105 and then forwards the search message 105 to one or more additional nodes 111. Eventually, the search message 105 reaches one or more responding nodes 103 having the requested data. One or more responding nodes 103 then send a response message 107 back to the requesting node 101, e.g., via the intermediate nodes 111. The requesting node 101 then requests the relevant data from a responding node 103 by connecting directly to the responding node 103, e.g., via direct connection 109.
In some cases, the requesting node 101 and the responding node 103 may not be able to connect to or communicate with each other. This condition may be permanent (e.g., the requesting node 101 and the responding node 103 are each behind different firewalls), or it may only be temporary (e.g., a network outage occurring on a path between the requesting node 101 and the responding node 103). In either case, the requesting node 101 and the responding node 103 will be unable, at least immediately, to complete the desired data transfer. Although the requesting node 101 and the responding node 103 might be able to communicate via a series of other nodes 111, the necessary traversal of multiple network links makes this solution not optimal (e.g., due to multiple potential points of failure, response time, etc.).
Thus, there is a need in the art for a method and apparatus for peer-to-peer connection assistance.